This disclosure relates to an efficient and exact mechanism for enablement of quota-based quality of service.
When multiple agents need access to a shared resource it is usually the case that some form of access control (e.g., a quality of service (QoS) policy) is used. The most basic form of quality of service is prioritization, in which a priority value is assigned to each agent and the agent with the highest priority is always granted access to the resource while it requires that access. Ties between agents with the same priority are generally broken arbitrarily or according to a secondary policy.
The main drawback of such a policy is that high priority agents can end up monopolizing the resource and causing starvation for the lower priority agents. An alternative option is to enforce proportional access to the resource. Each class of service (designating one or more agents) is assigned a value called a quota. Each class of service then receives access in proportion to the quota assigned to it. For example, if there were two classes of service with quotas of 100 and 10 respectively, access would be granted 100/10=10 times more often to the first class than to the second. An example of real-world usage of such a policy is the quality of service specification used in Infiniband network fabrics.
Designing mechanisms enabling quota-based resource allocation is not straightforward and needs to balance cost (e.g., the cost of providing the internal resources necessary for the arbitration) and precision (e.g., how well the resulting allocation conforms to the specification). It is therefore desirable to design an allocation mechanism that achieves a middle ground between costs and precision with a controllable tradeoff.